#!/bin/zsh  # MacOS 环境
#!/usr/bin/env sh  # Windows 环境

# 使用该脚本时将对应环境标识移动到第一行

# 确保脚本抛出遇到的错误
set -e

# 自动增加版本号（递增补丁版本）
echo "==>😈  自动增加版本号..."
npm version patch --no-git-tag-version

# 获取版本号（从package.json）
VERSION=$(node -p "require('./package.json').version")
# 获取当前北京时间并格式化
CURRENT_TIME=$(TZ='Asia/Shanghai' date +'%Y-%m-%d %H:%M:%S')
# 获取最新的10条 git 提交记录
CHANGELOG=$(git log -10 --pretty=format:"- %s (%ad)" --date=format:"%Y-%m-%d %H:%M")

# 更新项目根目录中的版本文件
echo "==>😈  更新项目版本记录..."
echo "{" > version.json
echo "  \"version\": \"$VERSION\"," >> version.json
echo "  \"updated\": \"$CURRENT_TIME\"," >> version.json
echo "  \"changelog\": [" >> version.json

# 格式化日志为JSON数组
git log -10 --pretty=format:"    {\"message\": \"%s\", \"date\": \"%ad\"}," --date=format:"%Y-%m-%d %H:%M" | sed '$ s/,$//' >> version.json

echo "  ]" >> version.json
echo "}" >> version.json

# 生成静态文件
echo "==>😈  生成静态文件..."
npm run build

# 创建 changelog 文件
echo "# Changelog - 部署于 $CURRENT_TIME" > .vitepress/dist/changelog.md
echo "" >> .vitepress/dist/changelog.md
echo "当前版本：$VERSION" >> .vitepress/dist/changelog.md
echo "" >> .vitepress/dist/changelog.md
echo "最近10次更新记录：" >> .vitepress/dist/changelog.md
echo "" >> .vitepress/dist/changelog.md
echo "$CHANGELOG" >> .vitepress/dist/changelog.md

# 进入生成的文件夹
echo "==>😈  进入构建目录..."
cd .vitepress/dist

# 初始化 Git 仓库
echo "==>😈  初始化Git仓库..."
git init

# 添加所有文件到 Git 仓库
echo "==>😈  添加所有文件到Git..."
git add -A

# 提交更改，包含当前北京时间和版本号
echo "==>😈  提交更改，版本 $VERSION，北京时间: $CURRENT_TIME..."
git commit -m "deploy version $VERSION at $CURRENT_TIME"

# 推送到 GitHub
echo "==>😈  推送到GitHub..."
git push -f git@github.com:indulgeback/indulgeback.github.io.git main:blog-pages

# 输出 changelog 信息
echo "==>😈  Changelog 已生成并部署："
echo "$CHANGELOG"

# 返回原始目录
echo "==>😈  返回原始目录..."
echo "==>😈  🏅当前版本 $VERSION 部署完成，部署于北京时间: $CURRENT_TIME...🏅"
cd -

# 更新主代码库
echo "==>😈  更新主代码库以记录版本变更..."
git add package.json version.json
git commit -m "chore: 更新版本至 $VERSION"
git push